package org.csu.gp_store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.csu.gp_store.entity.Account;
import org.jetbrains.annotations.NotNull;

public interface AccountService {
    /**
     * 获取所有经销商账号
     */
    IPage<Account> getAccountList();

    /**
     * 通过用户名获取账号
     *
     * @param username 用户名
     * @return Account
     */
    Account getAccount(@NotNull Long username);

    /**
     * 账户名是否已存在
     *
     * @param AccountID 用户名
     * @return boolean
     */
    boolean idExist(@NotNull Long AccountID);

    /**
     * email是否存在
     *
     * @param email
     * @return
     */
    boolean emailExist(@NotNull String email);

    boolean nameExist(@NotNull String name);

    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 密码
     * @return boolean
     */
    String userLogin(@NotNull String username, @NotNull String password, @NotNull String method);

    /**
     * 创建新经销商账户
     *
     * @param account 新的经销商账户
     * @return int 用来判断是否成功
     */
    int createNewUser(Account account);

    /**
     * 修改账户信息
     *
     * @param account 修改后的账户信息
     * @return int 修改行数
     */
    int modifyInfo(Account account);

    /**
     * 注销账户,将账号状态改为注销审核中
     *
     * @param username
     * @return
     */
    int cancelAccount(@NotNull Long username, @NotNull String password, @NotNull String email);

    /**
     * 确认注销
     *
     * @param username 账户名
     * @return boolean 信息是否正确
     */
    int cancelSubmit(@NotNull Long username);

    @Deprecated
    boolean standardAccount(@NotNull String AccountID);

    @Deprecated
    boolean standardPassword(@NotNull String password);

//    int insertRandomCode(@NotNull String username, @NotNull String verifyCode);

    Account getAccountByEmail(@NotNull String email);
}
